home *** CD-ROM | disk | FTP | other *** search
- //-------------------------------------------------------------------------------------------
- //
- // Copyright © 1990-2007 by Imaginova Corp, Inc., All rights reserved.
- //
- // Contains: Starry Night Widget:
- //
- // Author: Ivan Pinzon
- //
- // Date Initials Version Comments
- // ---------- --------- ---------- ---------------------------
- // 2007/07/31 IPA 1.2 New
- //
- //-------------------------------------------------------------------------------------------
-
- var kDashboardWidgetVersion="1.20";var kWidgetID=kDashboardWidget;var kWidgetTitle="Starry Night Widget";var kLocationKey="locationKey";var kPostalCodeKey="postalCodeKey";var kTimeZoneKey="timeZoneKey";var kLatitudeKey="latitudeKey";var kLongitudeKey="longitudeKey";var kAzimuthKey="azimuthKey";var kShowStarLabelsKey="showStarLabelsKey";var kShowPlanetLabelsKey="showPlanetLabelsKey";var kShowConstellationsKey="showConstellationsKey";var kShowHorizonKey="showHorizonKey";var kShowEclipticKey="showEclipticKey";var kShowDaylightKey="showDaylightKey";var kUseDSTKey="useDSTKey";var kCollapsedKey="collapsedKey";var kTransitionKey="transitionKey";var gPostalCodePref="M5C2H4";function preOnShow()
- {gSituation.dateTime.setTime(new Date());refreshSituationStatus();}
- function postOnShow()
- {}
- function widgetProcessEvent(inKey)
- {var sendRequest=true;switch(inKey)
- {case"D":case"d":setDaylight(!gSituation.options.daylight);break;default:sendRequest=false;break;}
- return sendRequest;}
- function keyPressedBack(e)
- {var back=document.getElementById("back");if(back.style.display=="block"&&event.shiftKey)
- {var key=String.fromCharCode(e.which);switch(key)
- {case"t":case"T":document.getElementById("transitionsDiv").style.display=="block"?document.getElementById("transitionsDiv").style.display="none":document.getElementById("transitionsDiv").style.display="block";break;}}}
- function setup()
- {trackAction(kWidgetID,kDashboardWidgetVersion,kTrack_Initialized,false);gZoomSlider=new Control.Slider('zoomSliderHandle','zoomSliderTrack',{axis:'vertical',range:$R(kMinFOV,kMaxFOV),sliderValue:gSituation.gaze.FOV});gZoomSlider.setEnabled();gZoomSlider.options.onChange=zoomSliderChanged;gZoomSlider.options.onSlide=zoomSliderSlid;gInfoButton=new AppleInfoButton(document.getElementById("infoButton"),document.getElementById("front"),"white","white",showPrefs);gMiniChartButton=new AppleButton(document.getElementById("chartDrawerButton"),"",20,"Images/miniChartButton.png","Images/miniChartButtonOn.png",20,"","","","",0,handleChartDrawer);gSNWebButton=new AppleButton(document.getElementById("goSNWebButton"),"",22,"Images/goSNWebButton.png","Images/goSNWebButtonON.png",22,"","","","",0,goToStarryNightServer);glassFindPostalCodeButton=new AppleGlassButton(document.getElementById("findButton"),"Find",findPostalCode);glassDoneButton=new AppleGlassButton(document.getElementById("doneButton"),"Done",hidePrefs);populateAzimuthOptions();populateTransitionOptions();populateMonthsAndTime();loadPrefs();gIsCollapsed=true;var dummyEvent=document.createEvent("MouseEvents");toggleView(dummyEvent);sendMiniChartRequest();gSetupWasCalled=true;if(gRefreshTimer==null)
- {gRefreshTimer=setInterval("sendMiniChartRequest();",1000*gRefreshPeriod);}
- document.getElementById("daylightIconDiv").style.display=gSituation.options.daylight?"none":"block";document.addEventListener("keypress",keyPressed,true);document.addEventListener("keypress",keyPressedBack,true);switch(gTransitionOptionsIndexPref)
- {case kCubeTransition:gCompositionElemID=kCubeCompositionElemID;break;case kCoreImageTransition:gCompositionElemID=kCoreImageCompositionElemID;break;default:break;}
- for(i=0;i<=kTabsCount;i++)
- {loadTabImages('Images/tab'+i+'.png','Images/tab'+i+'ON.png',i);}
- setTabImage("tabImg"+gCurrentTabPref,gCurrentTabPref,true);}
- function generateRequest()
- {gSituation.useTimezoneAndUTC=true;var url=getRequestURL(kDashboardWidget,kDashboardWidgetVersion,kGenerateImageRequest,gSituation,kWidthValue,kHeightValue);return url;}
- function postLatLongTyping()
- {gSituation.location.lat=parseFloat(document.getElementById("latitudeField").value);gSituation.location.lng=parseFloat(document.getElementById("longitudeField").value);}
- function preFindNearestCity()
- {gPostalCodePref="";gPostalValidated=true;gPostalFound=true;}
- function postFindNearestCity()
- {gCurrentLocation=gUserLocationPref;setDST();}
- function postalTyping(event)
- {gPostalValidated=false;}
- function postalKeyPress(event)
- {switch(event.keyCode)
- {case 13:case 3:case 9:if(!gPostalValidated)
- {findPostalCode();}
- break;}}
- function findPostalCode()
- {if(window.widget)
- {var postalCodeElement=document.getElementById("postalCodeField");if(postalCodeElement&&postalCodeElement.value.length>0)
- {var postalCode=postalCodeElement.value;postalCode=postalCode.toUpperCase();postalCode=postalCode.replace(/ /g,"");postalCodeElement.value=postalCode;var url=getRequestURL(kDashboardWidget,kDashboardWidgetVersion,kSearchPostalCodeRequest,gSituation,0,0,postalCode);gFindPostalCodeHttpRequest=new XMLHttpRequest();if(gFindPostalCodeHttpRequest.overrideMimeType)
- {gFindPostalCodeHttpRequest.overrideMimeType('text/xml');}
- document.getElementById("postalStatusBack").innerText="Searching...";gFindPostalCodeHttpRequest.onreadystatechange=postalCodeCallback;gFindPostalCodeHttpRequest.open('GET',url,true);gFindPostalCodeHttpRequest.setRequestHeader("Cache-Control","no-cache");gFindPostalCodeHttpRequest.send(null);gPostalFound=false;}}}
- function postalCodeCallback()
- {if(gFindPostalCodeHttpRequest.readyState==4)
- {if(gFindPostalCodeHttpRequest.status==200)
- {var replyFields=new Array();replyFields=gFindPostalCodeHttpRequest.responseText.split('|');if(replyFields[2]!="Not Found")
- {gPostalFound=true;document.getElementById("latitudeField").value=replyFields[0];document.getElementById("longitudeField").value=replyFields[1];document.getElementById("locationBack").innerText=replyFields[2];gSituation.location.timezone=replyFields[3];document.getElementById("postalStatusBack").innerText="";gLatLongValidated=true;savePrefs();setDST();}
- else
- {document.getElementById("postalStatusBack").innerText=replyFields[2];}
- gPostalValidated=true;delete replyFields;}
- else if(gFindPostalCodeHttpRequest.status==404)
- {alert("URL doesn't exist");}
- else
- {alert("There was a problem with the Postal Code request: "+gFindPostalCodeHttpRequest.status);alert(gFindPostalCodeHttpRequest.statusText);}}}
- function hidePrefs()
- {if(!gLatLongValidated)
- {findNearestCity();}
- savePrefs();var front=document.getElementById("front");var back=document.getElementById("back");if(window.widget)
- {if(!gIsCollapsed)
- {window.resizeTo(kMaxWidgetWidth,kMaxWidgetHeight);}
- widget.prepareForTransition("ToFront");}
- back.style.display="none";front.style.display="block";if(window.widget)
- {setTimeout('widget.performTransition();',0);if(gIsCollapsed)
- {window.resizeTo(kMinWidgetWidth,kMinWidgetHeight);}}
- setTimeout(prepareForNewTransition,80);gComposition.showLoading=true;restoreGaze();setTimeout(sendMiniChartRequest,100);resetRefreshTimer();startTickerTimer();restoreTickerScroll();document.getElementById("locationFront").innerText=gUserLocationPref;document.getElementById("daylightIconDiv").style.display=gSituation.options.daylight?"none":"block";setInfoButtonStyle();refreshSituationStatus();}
- function loadPrefs()
- {if(window.widget)
- {gIsCollapsed=(setPreference(widget.preferenceForKey(createKey(kCollapsedKey)),kYES)==kYES)?true:false;gTransitionOptionsIndexPref=setPreference(widget.preferenceForKey(createKey(kTransitionKey)),kFadeInOut);gAzimuthOptionsIndexPref=setPreference(widget.preferenceForKey(createKey(kAzimuthKey)),kSouthIndex);gUserLocationPref=setPreference(widget.preferenceForKey(createKey(kLocationKey)),"Toronto, Canada");gPostalCodePref=setPreference(widget.preferenceForKey(createKey(kPostalCodeKey)),"M5C2H4");gSituation.location.lat=setPreference(widget.preferenceForKey(createKey(kLatitudeKey)),kDefaultLatitude);gSituation.location.lng=setPreference(widget.preferenceForKey(createKey(kLongitudeKey)),kDefaultLongitude);gSituation.location.timezone=setPreference(widget.preferenceForKey(createKey(kTimeZoneKey)),kDefaultTimezone);gSituation.location.useDST=setPreference(widget.preferenceForKey(createKey(kUseDSTKey)),kNO)==kYES?true:false;;gSituation.options.starLabels=setPreference(widget.preferenceForKey(createKey(kShowStarLabelsKey)),kYES)==kYES?true:false;gSituation.options.planetLabels=setPreference(widget.preferenceForKey(createKey(kShowPlanetLabelsKey)),kYES)==kYES?true:false;gSituation.options.constellations=setPreference(widget.preferenceForKey(createKey(kShowConstellationsKey)),kYES)==kYES?true:false;gSituation.options.horizon=setPreference(widget.preferenceForKey(createKey(kShowHorizonKey)),kYES)==kYES?true:false;gSituation.options.ecliptic=setPreference(widget.preferenceForKey(createKey(kShowEclipticKey)),kNO)==kYES?true:false;gSituation.options.daylight=setPreference(widget.preferenceForKey(createKey(kShowDaylightKey)),kYES)==kYES?true:false;loadPrefsUI();setAzimuth(gAzimuthOptionsIndexPref);gSituation.gaze.alt=kDefaultAlt;gPostalFound=true;gLatLongValidated=true;gPostalValidated=true;}}
- function loadPrefsUI()
- {document.getElementById("locationFront").innerText=gUserLocationPref;document.getElementById("locationBack").innerText=gUserLocationPref;document.getElementById("postalCodeField").value=gPostalCodePref;document.getElementById("postalStatusBack").innerText="";document.getElementById("latitudeField").value=gSituation.location.lat;document.getElementById("longitudeField").value=gSituation.location.lng;document.getElementById("showStarLabelsChk").checked=gSituation.options.starLabels;document.getElementById("showLabelsChk").checked=gSituation.options.planetLabels;document.getElementById("showConstellationsChk").checked=gSituation.options.constellations;document.getElementById("showHorizonChk").checked=gSituation.options.horizon;document.getElementById("showEclipticChk").checked=gSituation.options.ecliptic;document.getElementById("showDaylightChk").checked=gSituation.options.daylight;document.getElementById('azimuthOptions').options[gAzimuthOptionsIndexPref].selected=true;document.getElementById('transitionOptions').options[gTransitionOptionsIndexPref].selected=true;document.getElementById('monthOptions').options[gSituation.dateTime.getUTCMonth()].selected=true;populateDays(gSituation.dateTime.getUTCFullYear(),gSituation.dateTime.getUTCMonth());document.getElementById('dayOptions').options[gSituation.dateTime.getDate()-1].selected=true;document.getElementById("yearField").value=gSituation.dateTime.getFullYear();var hour=gSituation.dateTime.getHours();var amPm=hour>11?kPm:kAm;if(hour>11)
- {hour-=12;}
- document.getElementById("timeOptions").options[hour].selected=true;document.getElementById('amPmOptions').options[amPm].selected=true;document.getElementById("useDSTChk").checked=gSituation.location.useDST;}
- function savePrefs()
- {if(window.widget)
- {savePrefsFromUI();widget.setPreferenceForKey(gUserLocationPref,createKey(kLocationKey));widget.setPreferenceForKey(gPostalCodePref,createKey(kPostalCodeKey));widget.setPreferenceForKey(gSituation.location.lat,createKey(kLatitudeKey));widget.setPreferenceForKey(gSituation.location.lng,createKey(kLongitudeKey));widget.setPreferenceForKey(gSituation.location.timezone,createKey(kTimeZoneKey));widget.setPreferenceForKey(gSituation.location.useDST,createKey(kUseDSTKey));widget.setPreferenceForKey(gAzimuthOptionsIndexPref,createKey(kAzimuthKey));widget.setPreferenceForKey(gSituation.options.starLabels,createKey(kShowStarLabelsKey));widget.setPreferenceForKey(gSituation.options.planetLabels,createKey(kShowPlanetLabelsKey));widget.setPreferenceForKey(gSituation.options.constellations,createKey(kShowConstellationsKey));widget.setPreferenceForKey(gSituation.options.horizon,createKey(kShowHorizonKey));widget.setPreferenceForKey(gSituation.options.ecliptic,createKey(kShowEclipticKey));widget.setPreferenceForKey(gSituation.options.daylight,createKey(kShowDaylightKey));widget.setPreferenceForKey(gTransitionOptionsIndexPref,createKey(kTransitionKey));}}
- function savePrefsFromUI()
- {var front=document.getElementById("front");var back=document.getElementById("back");if(back&&back.style.display=="block")
- {switch(gCurrentTabPref)
- {case kLocationTabView:gUserLocationPref=document.getElementById("locationBack").innerText;if(gPostalValidated&&gPostalFound)
- {gPostalCodePref=document.getElementById("postalCodeField").value;}
- gSituation.location.useDST=document.getElementById("useDSTChk").checked;break;case kOptionsTabView:gSituation.options.starLabels=document.getElementById("showStarLabelsChk").checked;gSituation.options.planetLabels=document.getElementById("showLabelsChk").checked;gSituation.options.constellations=document.getElementById("showConstellationsChk").checked;gSituation.options.horizon=document.getElementById("showHorizonChk").checked;gSituation.options.ecliptic=document.getElementById("showEclipticChk").checked;gSituation.options.daylight=document.getElementById("showDaylightChk").checked;break;default:break;}}
- else if(front&&front.style.display=="block")
- {gUserLocationPref=document.getElementById("locationFront").innerText;}
- if(gLatLongValidated&&gCurrentTabPref==kLocationTabView)
- {gSituation.location.lat=document.getElementById("latitudeField").value;gSituation.location.lng=document.getElementById("longitudeField").value;}}
- function setDaylight(inDaylight)
- {gSituation.options.daylight=inDaylight;document.getElementById("daylightIconDiv").style.display=gSituation.options.daylight?"none":"block";setInfoButtonStyle();}
- function setDST()
- {gSituation.location.useDST=currentlyExperiencingDST(gSituation);document.getElementById("useDSTChk").checked=gSituation.location.useDST;}
- function dateChanged(select)
- {var hour=0;switch(select.id)
- {case"monthOptions":gSituation.dateTime.setUTCFullYear(document.getElementById("yearField").value);gSituation.dateTime.setUTCMonth(select.selectedIndex);populateDays(gSituation.dateTime.getFullYear(),gSituation.dateTime.getUTCMonth());break;case"dayOptions":gSituation.dateTime.setUTCDate(select.selectedIndex);break;case"timeOptions":hour=select.selectedIndex;if(document.getElementById('amPmOptions').selectedIndex==kAm&&hour>11)
- {hour-=12;}
- else if(document.getElementById('amPmOptions').selectedIndex==kPm&&hour<12)
- {hour+=12;}
- gSituation.dateTime.setHours(hour);break;case"amPmOptions":hour=gSituation.dateTime.getHours();if(select.selectedIndex==kAm&&hour>11)
- {hour-=12;}
- else if(select.selectedIndex==kPm&&hour<12)
- {hour+=12;}
- gSituation.dateTime.setHours(hour);break;}}
- function yearTyping(event)
- {var year=document.getElementById("yearField").value;if(!isNaN(year))
- {gSituation.dateTime.setUTCFullYear(year);populateDays(gSituation.dateTime.getUTCFullYear(),gSituation.dateTime.getUTCMonth());}
- else
- {document.getElementById("yearField").value=gSituation.dateTime.getUTCFullYear();}}
- function yearKeyPress(event)
- {switch(event.keyCode)
- {case 13:case 3:case 9:break;}}
- function setInfoButtonStyle()
- {if(gIsCollapsed)
- {gInfoButton.setStyle("white","white");}
- else if(gSituation.options.daylight)
- {gInfoButton.setStyle("black","white");}
- else
- {gInfoButton.setStyle("white","black");}}
- function refreshWidgetStuff()
- {if(Math.abs(gZoomSlider.value-gSituation.gaze.FOV)>kEpsilon)
- {gZoomSlider.setValue(gSituation.gaze.FOV);}}